#include <stdio.h>
#include <signal.h>
#include <iostream>
#include <unistd.h>

static void sigint(int signo)
{
    std::cout << "捕捉到一个SIGINT" << std::endl;
}
static void sigxfsz(int signo)
{
    std::cout << "捕捉到一个SIGXFSZ" << std::endl;
}
int main()
{
    sigset_t blockset;
    sigemptyset(&blockset);
    sigaddset(&blockset, SIGINT);  // 添加2号信号（Ctrl+C）
    sigaddset(&blockset, SIGUSR1); // 添加40号信号（自定义信号1）
    sigprocmask(SIG_BLOCK, &blockset, NULL);
    while (1)
    {
        /* code */
        std::cout << "发送信号中" << std ::endl;
        signal(SIGINT, sigint);
        signal(SIGXFSZ, sigxfsz);
        std::cout << "发送完毕" << std ::endl;
        sleep(1);
    }
    
    sigprocmask(SIG_UNBLOCK, &blockset, NULL);
    return 0;
}